package com.mars.admin.modules.goods.service;

import com.mars.admin.modules.base.service.BaseService;
import com.mars.admin.modules.goods.entity.Goods;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 商品服务接口
 *
 * @author Mars
 * @version 1.0
 * @date 2025-01-07
 */
public interface GoodsService extends BaseService<Goods> {


    /**
     * 根据分类ID获取商品列表
     *
     * @param categoryId 分类ID
     * @param status     商品状态
     * @return 商品列表
     */
    List<Goods> getGoodsByCategoryId(Long categoryId, Integer status);

    /**
     * 获取推荐商品列表
     *
     * @param limit 限制数量
     * @return 推荐商品列表
     */
    List<Goods> getRecommendGoods(Integer limit);

    /**
     * 获取新品列表
     *
     * @param limit 限制数量
     * @return 新品列表
     */
    List<Goods> getNewGoods(Integer limit);

    /**
     * 获取热门商品列表
     *
     * @param limit 限制数量
     * @return 热门商品列表
     */
    List<Goods> getHotGoods(Integer limit);

    /**
     * 根据商品编码获取商品
     *
     * @param goodsCode 商品编码
     * @return 商品信息
     */
    Goods getByGoodsCode(String goodsCode);

    /**
     * 检查商品编码是否存在
     *
     * @param goodsCode 商品编码
     * @param excludeId 排除的ID（用于编辑时检查）
     * @return 是否存在
     */
    boolean existsGoodsCode(String goodsCode, Long excludeId);

    /**
     * 更新商品浏览量
     *
     * @param goodsId 商品ID
     */
    void updateViewCount(Long goodsId);
}
